package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.model.Sislct01;
import br.com.vti.sisp_sicrim.antigo.model.Sisldat8;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Estaa131A
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Estaa131A {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Estaa131A.jsp";
	private String jVersaoj;
	private int dataCorrente;
	private String operacao;
	private String horaCorrente;
	private int ddt;
	private int mdt;
	private int adt;
	private int dfi;
	private int mfi;
	private int afi;
	private long mat;
	private int jMatriculaj;
	private String jSenhaj;
	private String[] conimp = new String[3];
	private String jProgramaj;
	private String nomeClasse;
	public int datini;
	public int datfim;
	public String motida;
	public String mod;
	public String tip;
	public String dat;
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "operacao";
	private String navegar = "";
	private Boolean temMensagem = false;
	private Result result;
	private Sessao sessao;
	// Classes views
	// Classes includes
	Sislac01 sislac01 = new Sislac01();
	Sislct01 sislct01 = new Sislct01();
	Sisldat8 sisldat8 = new Sisldat8();
	Sisll001 sisll001 = new Sisll001();

	public Estaa131A() {
		inicializar(false);
	}

	public Estaa131A(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jVersaoj = "1.0";
			dataCorrente = 0;
			operacao = "";
			jMatriculaj = 0;
			jSenhaj = "";
			Arrays.fill(conimp, "");
			jProgramaj = this.getClass().getSimpleName();
			nomeClasse = this.getClass().getSimpleName();
			jMatriculaj = sessao.getScrg001().getWMatriculaw();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jSenhaj = sessao.getScrg001().getWSenhaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		sessao.getScrg001().setWMatriculaw(this.jMatriculaj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWSenhaw(this.jSenhaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public int getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(int dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getOperacao() {
		return operacao;
	}

	public void setOperacao(String operacao) {
		this.operacao = operacao;
	}

	public int getDdt() {
		return ddt;
	}

	public void setDdt(int ddt) {
		this.ddt = ddt;
	}

	public int getMdt() {
		return mdt;
	}

	public void setMdt(int mdt) {
		this.mdt = mdt;
	}

	public int getAdt() {
		return adt;
	}

	public void setAdt(int adt) {
		this.adt = adt;
	}

	public int getDfi() {
		return dfi;
	}

	public void setDfi(int dfi) {
		this.dfi = dfi;
	}

	public int getMfi() {
		return mfi;
	}

	public void setMfi(int mfi) {
		this.mfi = mfi;
	}

	public int getAfi() {
		return afi;
	}

	public void setAfi(int afi) {
		this.afi = afi;
	}

	public long getMat() {
		return mat;
	}

	public void setMat(long mat) {
		this.mat = mat;
	}

	public int getJmatriculaj() {
		return jMatriculaj;
	}

	public void setJmatriculaj(int jMatriculaj) {
		this.jMatriculaj = jMatriculaj;
	}

	public String getJsenhaj() {
		return jSenhaj;
	}

	public void setJsenhaj(String jSenhaj) {
		this.jSenhaj = jSenhaj;
	}

	public String[] getConimp() {
		return conimp;
	}

	public String getConimp(int index) {
		return conimp[index];
	}

	public void setConimp(String[] conimp) {
		this.conimp = conimp;
	}

	public void setConimp(int index, String conimp) {
		this.conimp[index] = conimp;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) {
		this.nomeClasse = nomeClasse;
	} // /

	public int getDatini() {
		return this.adt * 10000 + this.mdt * 100 + this.ddt;
	}

	public void setDatini(int datini) {
		this.datini = datini;
		this.adt = (int) UtilBean.extraiDigitos(datini, 8, 1, 4);
		this.mdt = (int) UtilBean.extraiDigitos(datini, 8, 5, 2);
		this.ddt = (int) UtilBean.extraiDigitos(datini, 8, 7, 2);
	} // /

	public int getDatfim() {
		return this.afi * 10000 + this.mfi * 100 + this.dfi;
	}

	public void setDatfim(int datfim) {
		this.datfim = datfim;
		this.afi = (int) UtilBean.extraiDigitos(datfim, 8, 1, 4);
		this.mfi = (int) UtilBean.extraiDigitos(datfim, 8, 5, 2);
		this.dfi = (int) UtilBean.extraiDigitos(datfim, 8, 7, 2);
	} // /

	public String getMotida() {
		return this.mod + this.tip + this.dat + this.mat;
	}

	public void setMotida(String motida) {
		this.motida = motida;
		this.mod = UtilBean.subStr(motida, 0, 3);
		this.tip = UtilBean.subStr(motida, 3, 2);
		this.dat = UtilBean.subStr(motida, 5, 8);
		this.mat = Long.parseLong(UtilBean.subStr(motida, 13, 7));
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}
}
